// house_pkg/pages/locate/index.ts
import QQMap from '../../../utils/qqmap'
const cacheData = wx.getStorageSync('cacheLocation_house_pkg_locate_index') || {}
Page({

  /**
   * 页面的初始数据
   */
  data: {
    list: [],
    currentLocation: ''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  async onLoad() {
    const {latitude,longitude} = await wx.getLocation()
    const location = {latitude,longitude}
    this.loadData(location)

  },
  /***
   * 加载获取位置信息的函数
   */
  async loadData(location){
    wx.showLoading({
      title: '正在加载',
      mask: true
    })
    const [res1,res2] = await Promise.all([
      QQMap.p.reverseGeocoder({
        location
      }),
      QQMap.p.search({
        keyword: '住宅小区',
        location
      })
    ])

    // 这里要注意一下，获取的是res1.result
    const { address_component } = res1.result
    const cacheKey = JSON.stringify(location)
    let data = cacheData[cacheKey]
    // 只要该数据存在就return
    if(data){
      setTimeout(() => {
        this.setData(data)
        wx.hideToast()
      }, 300);
      return 
    }
    data = {
      currentLocation: `${address_component.district}${address_component.street_number|| address_component.street}`,
      list: res2.data.map(({id,title}) => ({id,title}))
    }
    this.setData(data)
    cacheData[cacheKey] = data
    // 把它放入微信里面
    wx.setStorageSync('cacheLocation_house_pkg_locate_index', data)
    wx.hideLoading()
    //#region 
    // QQMap.reverseGeocoder({
    //   location: {latitude,longitude},
    //   success: (res)=>{
    //     const location = res.result.address_component
    //     this.setData({
    //       currentLocation: `${location.district}${location.street_number}`
    //     })
    //   }
    // })

    // QQMap.search({
    //   keyword: '住宅小区',
    //   location: {
    //     latitude,
    //     longitude
    //   },
    //   // 不可用普通函数
    //   success:(res)=> {
    //     // console.log('当前获取数据',res);
    //     const list = res.data.map(({id,title}) => ({id,title}))
    //     this.setData({
    //       list
    //     })
    //     wx.hideLoading()
    //   }
    // })
    //#endregion
  },
  async resetLocation() {
    const { latitude, longitude } = await wx.chooseLocation()
    const location = { latitude, longitude }
    this.loadData(location)
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})